qx.Class.define("caraffa.forms.Desktop",
{
  extend : qx.ui.form.ow.FormTab,
  construct : function ()
  {
	this.base(arguments, "Destkop", "Inicio", "", true);
	
	this._perfilUsuario = caraffa.Funciones.getPerfilUsuario();
	
    // /RPC 
    this.rpcTareas = new qx.io.remote.Rpc();
		this.rpcTareas.setTimeout(10000);
		this.rpcTareas.setUrl("services/");
		this.rpcTareas.setServiceName("tareas");
	
	this.rpcMensajes = new qx.io.remote.Rpc();
		this.rpcMensajes.setTimeout(10000);
		this.rpcMensajes.setUrl("services/");
	    this.rpcMensajes.setServiceName("mensajes");
    
    this.rpcDesktop = new qx.io.remote.Rpc();
		this.rpcDesktop.setTimeout(10000);
		this.rpcDesktop.setUrl("services/");
		this.rpcDesktop.setServiceName("desktop");
		
      
      	this.grp1 = new qx.ui.groupbox.GroupBox();
      		this.grp1.setWidth(370);
      		this.grp1.setLayout(new qx.ui.layout.Basic());
      		
      		this.grpParaHoy = new qx.ui.groupbox.GroupBox("Para HOY:");
      			this.grpParaHoy.setLayout(new qx.ui.layout.Basic());

      	this.imgActualizarHoy = new qx.ui.basic.Image("caraffa/22/actualizar.png");
      		this.imgActualizarHoy.setCursor("pointer");
      		      		      			
// COL2
      	if ((this._perfilUsuario.cod_tipo_usuario == '1') || (this._perfilUsuario.cod_tipo_usuario == '3'))
      	{
	      	this.tabs =
	      	[
	      		{name:'tabPacientes', value:'Pacientes del Día', icon:'caraffa/22/trajes.png'},
				{name:'tabTareas', value:'Tareas', icon:'caraffa/22/anotador2.png'},
				{name:'tabMensajes', value:'Mensajes', icon:'caraffa/22/email2.png'}
			];
      	}
      	else
      	{
      		this.tabs =
	      	[
				{name:'tabTareas', value:'Tareas', icon:'caraffa/22/anotador2.png'},
				{name:'tabMensajes', value:'Mensajes', icon:'caraffa/22/email2.png'}
			];
      	}
      	this.tbvGrp2 = new qx.ui.form.ow.Tabs(590,490,this.tabs);
      	this.tbvGrp2.getTabView().setContentPadding(0,0,0,0);
      	
      	// Tab Tareas
      		this.grp2Tareas = new qx.ui.groupbox.GroupBox();
      			this.grp2Tareas.setLayout(new qx.ui.layout.Basic());

      			this.rdbTipoTareas = new qx.ui.form.ow.Radios("Mostrar:",[{value:'Asignadas'},{value:'Creadas'},{value:'Realizadas'}],true);
      			
		    	this.mdlTareas = new qx.ui.table.model.Simple();
					this.mdlTareas.setColumns(["Código","Fec Asig.","Fec. Fin.", "Descripción", "Usuario", "E"]);
				this.grdTareas = new qx.ui.table.Table(this.mdlTareas);
					this.grdTareas.setStatusBarVisible(false);
					this.grdTareas.getTableColumnModel().setColumnVisible(0,false);
					this.grdTareas.setColumnWidth(0, 30);
					this.grdTareas.setColumnWidth(1, 80);
					this.grdTareas.setColumnWidth(2, 80);
					this.grdTareas.setColumnWidth(3, 220);
					this.grdTareas.setColumnWidth(4, 100);
					this.grdTareas.setColumnWidth(5, 30);
					this.grdTareas.setShowCellFocusIndicator(false);
					this.grdTareas.setWidth(530);
					this.grdTareas.setHeight(150);
				var imgGrdTareas = new qx.ui.table.cellrenderer.Image(19,16);
					this.grdTareas.getTableColumnModel().setDataCellRenderer(5,imgGrdTareas);
				
				this.txtTareaCuerpo = new qx.ui.form.ow.TextArea("Descripción Detallada:");
					this.txtTareaCuerpo.getText().setHeight(65);
					this.txtTareaCuerpo.getText().setWidth(530);
					this.txtTareaCuerpo.getLabel().setWidth(200);
					this.txtTareaCuerpo.getText().setReadOnly(true);
					
				this.txtTareaResolucionParcial = new qx.ui.form.ow.TextArea("Resolución Parcial:");
					this.txtTareaResolucionParcial.getText().setHeight(65);
					this.txtTareaResolucionParcial.getText().setWidth(250);
					this.txtTareaResolucionParcial.setTabIndex(1);
				this.txtTareaResolucionFinal = new qx.ui.form.ow.TextArea("Resolución Final:");
					this.txtTareaResolucionFinal.getText().setHeight(65);
					this.txtTareaResolucionFinal.getText().setWidth(250);
					this.txtTareaResolucionFinal.setTabIndex(2);
				this.grp2TareasBotonera = new qx.ui.groupbox.GroupBox();
					this.grp2TareasBotonera.setWidth(530);
					this.grp2TareasBotonera.setLayout(new qx.ui.layout.HBox(30).set({alignX:"center"}));
						this.btnTareasNueva = new qx.ui.form.Button("Nueva");
							this.btnTareasNueva.setTabIndex(3);
						this.btnTareasGuardar = new qx.ui.form.Button("Guardar");
							this.btnTareasGuardar.setTabIndex(4);
					this.grp2TareasBotonera.add(this.btnTareasNueva);
					this.grp2TareasBotonera.add(this.btnTareasGuardar);
				
				this.grp2Tareas.add(this.rdbTipoTareas, {top:0, left:0});
				this.grp2Tareas.add(this.grdTareas, {top:20, left:0});
				this.grp2Tareas.add(this.txtTareaCuerpo, {top:180, left:0});
				this.grp2Tareas.add(this.txtTareaResolucionParcial, {top:265, left:0});
				this.grp2Tareas.add(this.txtTareaResolucionFinal, {top:265, left:280});
				this.grp2Tareas.add(this.grp2TareasBotonera, {top:350, left:0});
   		
     		
			// Tab Mensajes
      		this.grp2Mensajes = new qx.ui.groupbox.GroupBox();
      			this.grp2Mensajes.setLayout(new qx.ui.layout.Basic());

      			this.rdbTipoMensajes = new qx.ui.form.ow.Radios("Mostrar:",[{value:'Recibidos'},{value:'Enviados'}],true);
		    	this.mdlMensajes = new qx.ui.table.model.Simple();
					this.mdlMensajes.setColumns(["Código","Fecha.","Asunto.", "Usuario", "E"]);		 
				this.grdMensajes = new qx.ui.table.Table(this.mdlMensajes);
					this.grdMensajes.setStatusBarVisible(false);
					this.grdMensajes.getTableColumnModel().setColumnVisible(0,false);
					this.grdMensajes.setColumnWidth(0, 30);
					this.grdMensajes.setColumnWidth(1, 80);
					this.grdMensajes.setColumnWidth(2, 300);
					this.grdMensajes.setColumnWidth(3, 100);
					this.grdMensajes.setColumnWidth(4, 30);
					this.grdMensajes.setShowCellFocusIndicator(false);
					this.grdMensajes.setWidth(530);
					this.grdMensajes.setHeight(150);
					var imgGrdMensajes = new qx.ui.table.cellrenderer.Image(19,16);
						this.grdMensajes.getTableColumnModel().setDataCellRenderer(4,imgGrdMensajes);
					
				this.txtMensajeCuerpo = new qx.ui.form.ow.TextArea("Mensaje:","","",false);
					this.txtMensajeCuerpo.getText().setHeight(65);
					this.txtMensajeCuerpo.getText().setWidth(530);
					this.txtMensajeCuerpo.getText().setReadOnly(true);
				this.txtMensajeResponder = new qx.ui.form.ow.TextArea("Respuesta:","","",false);
					this.txtMensajeResponder.getText().setHeight(65);
					this.txtMensajeResponder.getText().setWidth(530);
					this.txtMensajeResponder.getText().setReadOnly(true);
				
				
				this.grp2MensajesBotonera = new qx.ui.groupbox.GroupBox();
					this.grp2MensajesBotonera.setWidth(530);
					this.grp2MensajesBotonera.setLayout(new qx.ui.layout.HBox(30).set({alignX:"center"}));
						this.btnMensajesNuevo = new qx.ui.form.Button("Nuevo");
						this.btnMensajesResponder = new qx.ui.form.Button("Responder");
						this.btnMensajesBorrar = new qx.ui.form.Button("Borrar");
					this.grp2MensajesBotonera.add(this.btnMensajesNuevo);
					this.grp2MensajesBotonera.add(this.btnMensajesResponder);
					this.grp2MensajesBotonera.add(this.btnMensajesBorrar);
				
				this.grp2Mensajes.add(this.rdbTipoMensajes, {top:0, left:0});
				this.grp2Mensajes.add(this.grdMensajes, {top:20, left:0});
				this.grp2Mensajes.add(this.txtMensajeCuerpo, {top:170, left:0});
				this.grp2Mensajes.add(this.txtMensajeResponder, {top:255, left:0});
				this.grp2Mensajes.add(this.grp2MensajesBotonera, {top:335, left:0});
	
      	this.tbvGrp2.addToTab("tabTareas", this.grp2Tareas, {left:10, top:10});
	    this.tbvGrp2.addToTab("tabMensajes", this.grp2Mensajes, {left:10, top:10});
	    
	    if ((this._perfilUsuario.cod_tipo_usuario == '1') || (this._perfilUsuario.cod_tipo_usuario == '3'))
	    {
	    	this.tbvGrp2.addToTab("tabPacientes", new caraffa.widgets.PacientesFechaMedico, {left:10, top:10});
	    }
      	
      this.grp1.add(this.grpParaHoy, {left:10, top:10});	
      this.grp1.add(this.imgActualizarHoy,{left:310, top:0});
      this.add(this.tbvGrp2,{left:390,top:5});
      this.add(this.grp1,{left:10,top:5});
      this._attachEvents();
     
      
      // *************** PRUEBA CONCEPTUAL DE UN ALERTA *******************
//      this._checkChanges();
//      this.addListener('changeVisibility', function (e) { this._changes.start(); }, this);
      // ******************************************************************
  },
  
 // MEMBERS MEMBERS MEMBERS MEMBERSMEMBERS MEMBERS MEMBERS MEMBERS MEMBERS MEMBERS MEMBERS MEMBERS MEMBERS MEMBERS MEMBERS**
  members: {
  	rpcTareas : null,
  	rpcMensajes : null,
  	rpcDesktop : null,
  	
  	// *************** PRUEBA CONCEPTUAL DE UN ALERTA *******************
//	_color : null,
//  	_checkChanges : function ()
//  	{
//  		this._color = "black";
//		this._changes = new qx.event.Timer(1000);
//		this._changes.addListener('interval', function()
//		{
//			if (this._color == "black")
//			{
//				this._color = "red";
//			}
//			else
//			{
//				this._color = "black";
//			}
//			this.setLabel("<b style='color:" + this._color + "'>Inicio</b>");
//		}, this);
//  	},
  	// ******************************************************************
  	
	_attachEvents : function ()
	{
		this.addListener('appear', this._initForm, this);
		this.addListener('click', this._paraHoyAppear,this);
		
		
		this.tbvGrp2.getContentTab("tabTareas").addListenerOnce('appear', this._tabTareasAppear, this);
			this.grdTareas.addListener('cellClick', this._grdTareasCellClick, this);
			this.btnTareasGuardar.addListener('execute', this._btnTareasGuardarExecute, this);
			this.btnTareasNueva.addListener('execute', this._btnTareasNuevaExecute, this);
		this.tbvGrp2.getContentTab("tabMensajes").addListenerOnce('appear', this._tabMensajesAppear, this);
			this.grdMensajes.addListener('cellClick', this._grdMensajesCellClick, this);
			this.btnMensajesResponder.addListener('execute', this._btnMensajesResponderExecute, this);
			this.btnMensajesBorrar.addListener('execute', this._btnMensajesBorrarExecute, this);
			this.btnMensajesNuevo.addListener('execute', this._enviarMensajeExecute, this);
			
	},
	_initForm : function(){
  	// *************** PRUEBA CONCEPTUAL DE UN ALERTA *******************
//		this.setLabel("Inicio");
//		this._changes.stop();
  	// ******************************************************************
		
		this._paraHoyAppear();
	},
	
	_paraHoyAppear : function(){
		this.grpParaHoy.removeAll();
		this.scrollGrpParaHoy = new qx.ui.form.ow.Scroll(new qx.ui.layout.VBox(2), 310, 200);
		this.grpParaHoy.add(this.scrollGrpParaHoy, {left:0, top:0});

		try{
			var result = this.rpcDesktop.callSync("GetTareas");
				for (var i in result)
				{
					//*************** EL 'IF' ES PARCHE PARA INTERNET EXPLORER / CHROME **********************
					if (typeof result[i] != 'function')
					{
						this.layerScrollGrpParaHoy = new qx.ui.container.Composite(new qx.ui.layout.HBox(2));
						this.layerScrollGrpParaHoy.add(new qx.ui.basic.Image("caraffa/22/anotador2.png"));
						this.layerScrollGrpParaHoy.add(new qx.ui.basic.Label(result[i].descripcion));
						this.scrollGrpParaHoy.add(this.layerScrollGrpParaHoy);
					}
				}
		}
		catch(ex){
			alert("Error: " + ex);
		}
		try{
			var result = this.rpcDesktop.callSync("GetMensajes");
				for (var i in result)
				{
					//*************** EL 'IF' ES PARCHE PARA INTERNET EXPLORER / CHROME **********************
					if (typeof result[i] != 'function')
					{
						this.layerScrollGrpParaHoy = new qx.ui.container.Composite(new qx.ui.layout.HBox(2));
						this.layerScrollGrpParaHoy.add(new qx.ui.basic.Image("caraffa/22/email2.png"));
						this.layerScrollGrpParaHoy.add(new qx.ui.basic.Label(result[i].usuario+": "+result[i].asunto));
						this.scrollGrpParaHoy.add(this.layerScrollGrpParaHoy);
					}
				}
		}
		catch(ex){
			alert("Error: " + ex);
		}

	},


 // TAB TAREAS  ***********************************************************************************************************
	_tabTareasAppear : function(){
		this.grdTareas.getSelectionModel().resetSelection();
		this.txtTareaCuerpo.setValue("");
		this.txtTareaResolucionParcial.setValue("");
		this.txtTareaResolucionFinal.setValue("");
		this.btnTareasGuardar.setEnabled(false);
		this.rdbTipoTareas.addListenerOnce('changeValue', this._tabTareasAppear, this);
		if(this.rdbTipoTareas.getValue()!="Asignadas"){
	    		this.btnTareasGuardar.setEnabled(false);
	    		this.txtTareaResolucionParcial.getText().setReadOnly(true)
	    		this.txtTareaResolucionFinal.getText().setReadOnly(true);
	    }		
		try{
			var params = new Object();
				params.tipo = this.rdbTipoTareas.getValue();				
			var result = this.rpcTareas.callSync("Get", params);
//			alert(qx.util.Json.stringify(result, true));
			var data= new Array();
			for (var i in result)
			{
				//*************** EL 'IF' ES PARCHE PARA INTERNET EXPLORER / CHROME **********************
				if (typeof result[i] != 'function')
				{
					switch(result[i].estado){
						case 'N': var estado = "caraffa/16/botonRojo.png"; break;
						case 'P': var estado = "caraffa/16/botonAmarillo.png"; break;
						case 'R': var estado = "caraffa/16/botonVerde.png"; break;
					}
					data[i]=[result[i].cod_tarea, result[i].fecha_creacion, result[i].fecha_cierre, result[i].descripcion, result[i].usuario, estado ]; 
				}
			}
			this.mdlTareas.setData(data);
		}
		catch(ex){
			alert("Sync exception: " + ex);
		}
	},	
	_grdTareasCellClick : function(){		
		try{
			var result = this.rpcTareas.callSync("getTarea", this.mdlTareas.getValue(0, this.grdTareas.getFocusedRow()));

			this.txtTareaCuerpo.setValue(result.cuerpo);
			this.txtTareaResolucionParcial.setValue(result.resolucion_parcial);
			this.txtTareaResolucionFinal.setValue(result.resolucion_final);
			if(this.rdbTipoTareas.getValue()=="Asignadas"){
				if(result.estado == "R"){
					this.txtTareaResolucionParcial.getText().setReadOnly(true);
					this.txtTareaResolucionFinal.getText().setReadOnly(true);
					this.btnTareasGuardar.setEnabled(false);
				}
				else{
					this.txtTareaResolucionParcial.getText().setReadOnly(false);
					this.txtTareaResolucionFinal.getText().setReadOnly(false);
					this.btnTareasGuardar.setEnabled(true);
				}
			}
		}
		catch(ex){
			alert("Error: " + ex);
		}	
	},
	_btnTareasGuardarExecute : function(){
		if(this.grdTareas.getSelectionModel().getSelectedCount()){
			try{	
				var result = this.rpcTareas.callSync("guardarTarea",this.mdlTareas.getValue(0, this.grdTareas.getFocusedRow()), this.txtTareaResolucionParcial.getValue(), this.txtTareaResolucionFinal.getValue());
				this._tabTareasAppear();
			}
			catch(ex){
				alert("Error: " + ex);
			}
		}
		else{
			alert("Debe seleccionar un mensaje");
		}
	},
	_btnTareasNuevaExecute: function(){
		var winNuevaTarea = new caraffa.widgets.CrearTarea("Crear Tarea");
			winNuevaTarea.addListener('tareaCreada', this._tabTareasAppear, this);
  			winNuevaTarea.open();
	},


// TAB MENSAJES  *********************************************************************************************************
	
	_tabMensajesAppear : function(){
		this.btnMensajesBorrar.setEnabled(false);
		this.btnMensajesResponder.setEnabled(false);
		this.rdbTipoMensajes.addListenerOnce('changeValue', this._tabMensajesAppear, this);
		this.txtMensajeCuerpo.setValue("");
		this.txtMensajeResponder.setValue("");
		this.grdMensajes.getSelectionModel().resetSelection();		
	    if(this.rdbTipoMensajes.getValue()=="Enviados"){
	    	this.mdlMensajes.setColumns(["Código","Fecha.","Asunto.", "Hacia", "E"]);
    		this.txtMensajeResponder.setVisibility("hidden");
    		this.btnMensajesResponder.setEnabled(false);
	    }
	    else{
	    	this.mdlMensajes.setColumns(["Código","Fecha.","Asunto.", "Desde", "E"]);
	    	this.txtMensajeResponder.setVisibility("visible");
	    }
		
		try{
			var params = new Object();
				params.tipo = this.rdbTipoMensajes.getValue();
			var result = this.rpcMensajes.callSync("Get", params);
//			alert(qx.util.Json.stringify(result, true));
			var data= new Array();
			for (var i in result){
				//*************** EL 'IF' ES PARCHE PARA INTERNET EXPLORER / CHROME **********************
				if (typeof result[i] != 'function')
				{
					switch(result[i].estado){
						case 'N': var estado = "caraffa/16/email2.png"; break;
						case 'L': var estado = "caraffa/16/email.png"; break;
						case 'R': var estado = "caraffa/16/flecha3Rehacer.png"; break;
					}
					data[i]=[result[i].cod_mensaje, result[i].fecha, result[i].asunto, result[i].usuario, estado];
				}
			}
			this.mdlMensajes.setData(data);
		}
		catch(ex){
			alert("Error: " + ex);
		}
	},
	_grdMensajesCellClick : function(){
		this.btnMensajesBorrar.setEnabled(true);
		
		try{
			var params = new Object();
			params.cod_mensaje = this.mdlMensajes.getValue(0, this.grdMensajes.getFocusedRow());
			var result = this.rpcMensajes.callSync("getMensaje", params);
			this.txtMensajeCuerpo.setValue(result.cuerpo);
			this.txtMensajeResponder.setValue(result.respuesta);
			if(this.rdbTipoMensajes.getValue()=="Recibidos"){
				if(result.respuesta != ""){
					this.btnMensajesResponder.setEnabled(false);
					this.txtMensajeResponder.getText().setReadOnly(true);
				}
				else{
					this.btnMensajesResponder.setEnabled(true);
					this.txtMensajeResponder.getText().setReadOnly(false);
					this.mdlMensajes.setValue(4, this.grdMensajes.getFocusedRow(), "caraffa/16/email.png");
				}
			}
		}
		catch(ex){
			alert("Error: " + ex);
		}	
	},
	
	_btnMensajesResponderExecute : function(){
		if(this.grdMensajes.getSelectionModel().getSelectedCount()){
			try{
				var params = new Object();
					params.cod_mensaje = this.mdlMensajes.getValue(0, this.grdMensajes.getFocusedRow());
					params.respuesta =  this.txtMensajeResponder.getValue();
				var result = this.rpcMensajes.callSync("reSendMensaje", params);
				this._tabMensajesAppear();
				this.btnMensajesResponder.setEnabled(false);
				this.txtMensajeResponder.getText().setReadOnly(true);
			}
			catch(ex){
				alert("Error: " + ex);
			}
		}
		else{
			alert("Debe seleccionar un mensaje");
		}
	},
	_btnMensajesBorrarExecute : function(){
		if(this.grdMensajes.getSelectionModel().getSelectedCount()){
			try{
				var result = this.rpcMensajes.callSync("borrarMensaje",this.mdlMensajes.getValue(0, this.grdMensajes.getFocusedRow()));
				this._tabMensajesAppear();
			}
			catch(ex){
				alert("Error: " + ex);
			}
		}
		else{
			alert("Debe seleccionar un mensaje");
		}
  	},
  	_enviarMensajeExecute: function(){
  		var winEnviarMensaje = new caraffa.widgets.EnviarMensaje("Crear Mensaje");
  		winEnviarMensaje.addListenerOnce('mensajeEnviado', this._tabMensajesAppear, this);
  		winEnviarMensaje.open();
  		
  	}
  }
});
